/*
 * @Descripttion:
 * @version:
 * @Author: chenbolin@msn.cn
 * @Date: 2021-05-20 10:35:50
 * @LastEditors: chenbolin@msn.cn
 * @LastEditTime: 2023-10-28 09:25:17
 */
#ifndef HAL_CONFIG_H
#define HAL_CONFIG_H

#define H_PORTA(p) (0x00 + p)
#define H_PORTB(p) (0x10 + p)
#define H_PORTC(p) (0x20 + p)
#define H_PORTD(p) (0x30 + p)
#define H_PORTE(p) (0x40 + p)
#define H_PORTF(p) (0x50 + p)

typedef enum
{
    HAL_UART_PORT_3 = 0,
    HAL_UART_COUNT
} HalUartPort_t;

/*输出信号*/
#define HAL_PIN_WIRELESS_RESET H_PORTD(8) // 无线模块复位

#define HAL_PIN_OUT_EMERGENCY_STOP H_PORTB(5) // 急停输出
#define HAL_PIN_OUT_LIGTING H_PORTB(6)        // 照明
#define HAL_PIN_OUT_ENGINE_START H_PORTB(3)    // 启动
#define HAL_PIN_OUT_ENGINE_STOP H_PORTB(4)   // 熄火
#define HAL_PIN_OUT_RPM_SWITCH H_PORTC(10)    // 油门切换
#define HAL_PIN_OUT_HORN H_PORTA(15)           // 喇叭

#define HAL_PIN_OUT_LED_STATE_RED HAL_GPIO_INVALID_IO // 单色灯，状态为绿色
#define HAL_PIN_OUT_LED_STATE_GREEN H_PORTD(15)
#define HAL_PIN_OUT_LED_SIGNAL_RED HAL_GPIO_INVALID_IO // 单色灯，信号为绿色
#define HAL_PIN_OUT_LED_SIGNAL_GREEN H_PORTD(14)

#define HAL_SERAIL_PORT_MANUFACTORY HAL_UART_PORT_3

#define HAL_UUID_LEN 12
#define HAL_AUTH_KEY_LEN 16

#define KB(x) ((x) * 1024)
#define HAL_FLASH_SIZE (KB(1024))

#define HAL_FLASH_BASE_ADDR 0x8000000
#define HAL_FLASH_OTA_ADDR (HAL_FLASH_BASE_ADDR + KB(256))
#define HAL_FLASH_MANUFACTORY_INFO_ADDR (HAL_FLASH_BASE_ADDR + KB(640))
#define HAL_FLASH_OTA_INFO_ADDR (HAL_FLASH_BASE_ADDR + KB(896))

#endif
